package ar.com.ctrln.persistence.dao.contratacion;

import java.util.List;

import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import ar.com.ctrln.persistence.dao.AbstractHibernateDao;
import ar.com.ctrln.persistence.model.contratacion.DetalleContratacion;

@Repository("detalleContratacionDao")
public class HibernateDetalleContratacionDao extends
		AbstractHibernateDao<DetalleContratacion> implements
		DetalleContratacionDao {

	@SuppressWarnings("unchecked")
	@Override
	public List<DetalleContratacion> findByContratacion(long id_contratacion) {
		Query q = getSession().createQuery(
				"Select c.detalles from ContratacionServicio c where c.id = ?");
		q.setParameter(0, id_contratacion);
		return (List<DetalleContratacion>) q.list();

	}

	@SuppressWarnings("unchecked")
	@Override
	@Transactional(readOnly = true)
	public List<DetalleContratacion> getList(long id) {
		Query q = getSession().createQuery(
				"from DetalleContratacion d where d.id_contratacion = ?");
		q.setParameter(0, id);
		return (List<DetalleContratacion>) q.list();
	}

	@SuppressWarnings("unchecked")
	@Override
	@Transactional(readOnly = true)
	public List<DetalleContratacion> findByContratacionTipoServicio(
			long id_contratacion, long id_servicio) {
		Query q = getSession()
				.createQuery(
						"from DetalleContratacion d where d.id_contratacion = ? and d.servicio.id_tipoServicio = ?");
		q.setParameter(0, id_contratacion);
		q.setParameter(0, id_servicio);
		return (List<DetalleContratacion>) q.list();
	}

}
